// 该文件用于创建Vuex最为核心的store

// 引入Vue
import Vue from "vue";
// 引入vuex
import Vuex from "vuex";
// 应用Vuex
Vue.use(Vuex);

// 准备 actions ————用于响应组件中的动作
const actions = {
  // 可以复用之前的逻辑
  jia(context, value) {
    context.dispatch("demo1", value);
  },
  demo1(context, value) {
    context.dispatch("demo2", value);
  },
  demo2(context, value) {
    context.dispatch("JIA", value);
  },

  //   jian(context, value) {
  //     context.commit("JIAN", value);
  //   },
  jiaOdd(context, value) {
    if (context.state.sum % 2) {
      context.commit("JIA", value);
    }
  },
  jiaWait(context, value) {
    setTimeout(() => {
      context.commit("JIA", value);
    }, 500);
  },
};
// 准备 mutations ————用于操作数据（state）
const mutations = {
  JIA(state, value) {
    state.sum += value;
  },
  JIAN(state, value) {
    state.sum -= value;
  },
  ADD_PERSON(state, personObj) {
    state.personList.unshift(personObj);
  },
};
// 准备 state ————用于存储数据
const state = {
  // 当前和
  sum: 0,
  school: "石大",
  subject: "前端",
  personList: [{ id: "001", name: "张三" }],
};

// 准备getters————用于将state的数据进行加工
// 不用计算属性，计算属性不能跨组件使用
const getters = {
  bigSum(state) {
    return state.sum * 10;
  },
};

// 创建store并暴露store/导出
export default new Vuex.Store({
  actions,
  mutations,
  state,
  getters,
});
